package model;

import java.io.Serializable;

import javax.persistence.*;

import util.Converter;
import dto.PacchettoPersonaleDTO;
import dto.PacchettoPredefinitoDTO;

import java.util.Date;
import java.util.List;


/**
 * The persistent class for the PacchettoPredefinito database table.
 * 
 */
@Entity
@Table(name="PacchettoPredefinito")
@NamedQuery(name="PacchettoPredefinito.findAll", query="SELECT p FROM PacchettoPredefinito p")
public class PacchettoPredefinito implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private int idPacchettoPredefinito;
	private String nome;
	@Temporal(TemporalType.DATE)
	private Date dataCreazione;
	private float totale;
	@ManyToMany
	@JoinTable(
		name="ContenutoPacchettoPredefinito"
		, joinColumns={
			@JoinColumn(name="idPacchettoPredefinito", referencedColumnName="idPacchettoPredefinito")
			}
		, inverseJoinColumns={
			@JoinColumn(name="idElementoBase", referencedColumnName="idElementoBase")
			}
		)
	private List<ElementoBase> elementi;
	private boolean approvato;
	
	public PacchettoPredefinito(){
		
	}
	
	public PacchettoPredefinito(PacchettoPredefinitoDTO pack) {
		this.idPacchettoPredefinito = pack.getIdPacchettoPredefinito();
		this.nome = pack.getNome();
		this.dataCreazione = pack.getData();
		this.totale = pack.getTotale();
		this.elementi = Converter.convertElementiFromDTO(pack.getElementi());
		this.approvato = pack.isApprovato();
	}

	public int getIdPacchettoPredefinito() {
		return this.idPacchettoPredefinito;
	}

	public void setIdPacchettoPredefinito(int idPacchettoPredefinito) {
		this.idPacchettoPredefinito = idPacchettoPredefinito;
	}

	public Date getDataCreazione() {
		return this.dataCreazione;
	}

	public void setDataCreazione(Date dataCreazione) {
		this.dataCreazione = dataCreazione;
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public float getTotale() {
		return this.totale;
	}

	public void setTotale(float totale) {
		this.totale = totale;
	}

	public List<ElementoBase> getElementi() {
		return elementi;
	}

	public void setElementi(List<ElementoBase> elementi) {
		this.elementi = elementi;
	}

	public boolean isApprovato() {
		return approvato;
	}

	public void setApprovato(boolean approvato) {
		this.approvato = approvato;
	}
	
	
	
	

}